package cn.sytton.taffecloud.service.job.entity;

import cn.sytton.taffecloud.common.base.annotation.NewId;
import cn.sytton.taffecloud.common.db.validation.Field;
import cn.sytton.taffecloud.common.db.validation.NotDuplicate;
import cn.sytton.taffecloud.common.model.base.FieldEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;

/**
 * 定时任务entity sys_job
 *
 * @author skyrock
 */
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
@NotDuplicate(value = {
        @Field(name = {"jobName"}, message = "任务名称[ %s ]已存在")},
        excludeByField="jobId")
public class JobEntity extends FieldEntity {

    @NewId
    @NotNull(message = "任务ID不能为空")
    private String jobId;    // 任务ID 

    @NotNull(message = "任务名称不能为空")
    private String jobName;    // 任务名称 

    private String jobGroup =  "DEFAULT";    // 任务组名

    private String invokeTarget;    // 调用目标beanId 

    private String cronExpression;    // cron执行表达式 

    private String misfirePolicy =  "3";    // 计划执行错误策略（1立即执行 2执行一次 3放弃执行）

    private Integer concurrent =  0;    // 是否并发执行（1允许 0禁止）

    private Integer status =  1;    // 状态（1正常 0暂停） 

    private String remark;    // 备注信息 


    //-----以下是关联属性-----
}
